"""
    @Author  ：思念 
    @File    ：1.基础语法.md
    @Date    ：2024/12/7 15:45 
"""
import re

'''
    通配符:. 匹配任何单个字符
    重复匹配任意次数：* 匹配零次或多次
    重复匹配至少一次：+ 匹配一次或多次
    匹配0次或者一次：?
    匹配执行次数：{n,m}
'''

content = '''
苹果，是绿色的
橙子，是橙色的
香蕉，是黄色的
乌鸦，是黑色的
猴子，
'''

# 通配符:. 匹配任何单个字符
for i in re.findall(r".色", content):
    print(i)

# 重复匹配任意次数：* 匹配零次或多次
for i in re.findall(r"，.*", content):
    print(i)

print("-" * 50)
# 重复匹配至少一次：+ 匹配一次或多次
for i in re.findall(r"，.+", content):
    print(i)

print("-" * 50)
# 匹配0次或者一次：?
for i in re.findall(r"，.?", content):
    print(i)

print("-" * 50)
# 匹配执行次数：{n,m} 匹配连续出现n到m次的字符
for i in re.findall(r"，.{4}", content):
    print(i)
print("-" * 50)
# 从，开始匹配4个字符，不包含，
for i in re.findall(r"，(.{4})", content):
    print(i)
print("-" * 50)


content = '<html><head><title>Title</title>'
'''
    贪婪模式：匹配尽可能多的字符
    非贪婪（懒惰）模式：匹配尽可能少的字符
'''
# 贪婪模式：匹配尽可能多的字符
for i in re.findall(r"<.*>", content):
    print(i)

print("-" * 50)
# 非贪婪（懒惰）模式：匹配尽可能少的字符
for i in re.findall(r"<.*?>", content, re.S):
    print(i)

print("-" * 50)
# 元字符转义
content = '''
苹果.是绿色的
橙子.是橙色的
香蕉.是黄色的
'''

for temp in re.findall(r'.*\.', content):
    print(temp)

print("-" * 50)
content = 'a1b2c3d4e5A5C9D8E7F6'
"""
●  \d匹配0-9之间任意一个数字字符，等价于表达式：[0-9] 
●  \D匹配任意一个不是0-9之间的数字字符，等价于表达式：[^0-9] 
●  \s匹配任意一个空白字符，包括空格、tab、换行符等，等价于表达式：[\t\n\r\f\v] 
●  \S匹配任意一个非空白字符，等价于表达式：[^\t\n\r\f\v] 
●  \w匹配任意一个文字字符，包括大小写字母、数字、下划线，等价于表达式：[a-zA-Z0-9_] 
●  \W匹配任意一个非文字字符，等价于表达式：[^a-zA-Z0-9_] 
"""
# 匹配某种字符类型
for temp in re.findall(r'[a-zA-Z]+', content):
    print(temp)

print("-" * 50)
# 起始结尾位置 ^: 开头 $: 结尾
content = 'a1b2c3d4e5A5C9D8E7F6'
for temp in re.findall(r'^a\d', content):
    print(temp)

print("-" * 50)
for temp in re.findall(r'F6$', content):
    print(temp)

print("-" * 50)

content = '''001-苹果价格-60
002-橙子价格-70
003-香蕉价格-80
'''
for temp in re.findall(r'^\d+', content, re.M):
    print("序号提取：",temp)
print("-" * 50)
for temp in re.findall(r'\d+$', content, re.M):     # 去掉re.M，只会显示最后一行
    print("价格提取：",temp)

print("-" * 50)
# 多选匹配 |
for temp in re.findall(r'苹果|橙子|香蕉', content):
    print(temp)

print("-" * 50)

